Session ব্যবহার করে Entity Save করা

Basic CRUD অপারেশন (Basic CRUD Operations) - এন হাইবারনেট (NHibernate) - Microsoft Technologies

294

NHibernate-এ Entity Save করার জন্য আপনাকে Session এর মাধ্যমে ডেটাবেসে একটি নতুন অবজেক্ট সেভ করতে হবে। NHibernate-এর Session একটি ট্রানজেকশন কনটেক্সটের মধ্যে কাজ করে, যেখানে আপনি অবজেক্টের ডেটাবেসে ইনসার্ট, আপডেট, বা ডিলিট অপারেশন করতে পারেন।

এখানে, আমরা দেখাবো কীভাবে একটি Entity অবজেক্ট তৈরি করে তা ডেটাবেসে Save করা যায়।


1. Entity ক্লাস তৈরি করা

ধরি, আমাদের একটি Employee ক্লাস রয়েছে, যা একটি Entity হিসেবে কাজ করবে এবং ডেটাবেসে সেভ করা হবে। এই ক্লাসটি সাধারণত POCO (Plain Old CLR Object) ক্লাস হয় এবং এতে হাইবারনেটের mapping থাকবে।

public class Employee
{
    public virtual int Id { get; set; }  // Primary Key
    public virtual string Name { get; set; }
    public virtual int Age { get; set; }
}

2. Session ব্যবহার করে Entity Save করা

NHibernate এ Session ব্যবহার করে Save অপারেশন খুবই সহজ। একে Unit of Work প্যাটার্নের অংশ হিসেবে ব্যবহার করা হয়। একবার সেশন তৈরি করার পর, আপনি যে Entity-টি সেভ করতে চান তা Session.Save() মেথড দিয়ে সেভ করতে পারেন।

এখানে একটি উদাহরণ দেওয়া হল, যেখানে একটি Employee অবজেক্ট তৈরি করে তা সেভ করা হচ্ছে:

using NHibernate;
using NHibernate.Cfg;

public class EmployeeService
{
    public void SaveEmployee(string name, int age)
    {
        // SessionFactory তৈরি এবং সেশন খোলা
        using (ISession session = NHibernateHelper.SessionFactory.OpenSession())
        {
            // ট্রানজেকশন শুরু
            using (ITransaction transaction = session.BeginTransaction())
            {
                try
                {
                    // একটি নতুন Employee অবজেক্ট তৈরি
                    var employee = new Employee { Name = name, Age = age };

                    // Employee অবজেক্টটি সেভ করা
                    session.Save(employee);

                    // ট্রানজেকশন কমিট করা
                    transaction.Commit();
                }
                catch (Exception)
                {
                    // কোনো ত্রুটি হলে ট্রানজেকশন রোলব্যাক করা
                    transaction.Rollback();
                    throw;
                }
            }
        }
    }
}

3. কী ঘটছে এখানে?

  1. Session Open করা:
    • NHibernateHelper.SessionFactory.OpenSession() মেথডটি SessionFactory ব্যবহার করে একটি নতুন Session খুলছে। এখানে SessionFactory একটি একক অবজেক্ট হিসেবে থাকে, যেটি একটি কনফিগারেশন ফাইল থেকে সেশন ফ্যাক্টরি তৈরি করে।
  2. Transaction শুরু করা:
    • session.BeginTransaction() মেথডটি একটি নতুন Transaction শুরু করছে। Transaction এর মাধ্যমে আপনি একাধিক অপারেশন একত্রে সম্পাদন করতে পারেন এবং যদি কোনো ত্রুটি ঘটে, তাহলে সেগুলো রোলব্যাক করতে পারবেন।
  3. Entity Save করা:
    • session.Save(employee) মেথডটি employee অবজেক্টটি ডেটাবেসে সেভ করছে। এই মেথডটি একটি SQL INSERT কুয়েরি তৈরি করে এবং ডেটাবেসে পাঠায়।
  4. Commit:
    • transaction.Commit() মেথডটি সমস্ত পরিবর্তন সঠিকভাবে ডেটাবেসে সেভ করার জন্য ট্রানজেকশন কমিট করে।
  5. Rollback:
    • যদি কোনো ত্রুটি হয়, তবে transaction.Rollback() মেথডটি সমস্ত পরিবর্তন বাতিল করে, এবং ডেটাবেসে কোন পরিবর্তন সঞ্চিত হয় না।

4. Session এবং Transaction ব্যবস্থাপনা

NHibernate এ Session এবং Transaction খুবই গুরুত্বপূর্ণ, কারণ এগুলি ডেটাবেসে কার্যকরীভাবে অপারেশন সম্পাদন করতে সহায়তা করে। Session হল একটি কনটেক্সট যা একাধিক অপারেশন সমন্বিত করে এবং Transaction এক বা একাধিক অপারেশনকে অ্যাটমিকভাবে (Atomic) সম্পাদন করতে সহায়তা করে।

এটি নিশ্চিত করে যে যদি কোনো ত্রুটি হয়, তাহলে সমস্ত অপারেশন রোলব্যাক হয়ে যাবে এবং ডেটাবেসে কোনো অপারেশন কার্যকর হবে না।


5. Save() এর পরে Save করা Entity এর ID পাওয়া

যেহেতু Entity-টির Id সাধারণত ডেটাবেস থেকে Auto-generated হয় (যেমন Identity, Sequence, ইত্যাদি), তাই আপনি Save() মেথডটি কল করার পর সেভ হওয়া Entity-টির Id পেতে পারেন:

var employee = new Employee { Name = name, Age = age };
session.Save(employee);

// সেভ হওয়া Entity-টির Id পাওয়া
Console.WriteLine("Employee ID: " + employee.Id);

এটি ডেটাবেসের Auto-generated Primary Key (ID) আপনাকে প্রদান করবে।


সারাংশ

  • NHibernate Session ব্যবহার করে আপনি Entity গুলি ডেটাবেসে সেভ করতে পারেন।
  • Transaction ব্যবহারের মাধ্যমে আপনি একাধিক অপারেশন অ্যাটমিকভাবে সম্পাদন করতে পারেন।
  • Session.Save() মেথড ব্যবহার করে আপনি Entity-কে ডেটাবেসে সেভ করতে পারেন এবং নতুন Id পেতে পারেন।
  • Transaction Commit/Rollback ব্যবস্থাপনা নিশ্চিত করে যে, কোনো ত্রুটি হলে সবকিছু রোলব্যাক হয়ে যাবে।
Content added By
Promotion

Are you sure to start over?

Loading...